package com.minshenglife.zanzan.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.minshenglife.commons.dal.Page;
import com.minshenglife.zanzan.entity.RedFlower;
import com.minshenglife.zanzan.result.RedFlowerResult;
import com.minshenglife.zanzan.result.UserResult;


/**
 * 红花流水service
 * @author huodd
 *
 */
public interface RedFlowerService {

	/**
	 * 添加流水信息
	 * @param redFlower
	 */
	public void add(RedFlower redFlower);
	/**
	 * 获取我的红花流水
	 * @param empId
	 * @param startDate
	 * @param endDate
	 * @param isHasRule 是有规则限制的，（当活动期间为true,否则为false）
	 * @return
	 */
	public List<RedFlower> findMyRedFlowerList(String empId,Date startDate,Date endDate,boolean isHasRule);
	/**
	 * 每月送给个人的红花数
	 * @param fromEmpId 送花人
	 * @param toEmpId 收花人
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public Long countRedFlowerOfMonth(String fromEmpId,String toEmpId,Date startDate,Date endDate);
	/**
	 * 每个月送给本部门(收花人所在部门)的红花数
	 * @param fromEmpId 送花人
	 * @param toEmpId 收花人
	 * @param startDate
	 * @param endDate
	 * @param isHasRule 是有规则限制的，（当活动期间为true,否则为false）
	 * @return
	 */
	public Long countRedFlowerOfMonthOfDept(String fromEmpId,String toEmpId,Date startDate,Date endDate, boolean isHasRule);
	/**
	 * 进步榜
	 * @param map
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<UserResult> findProgressRank(Map<String,Object> map,int pageNo,int pageSize);
	
	/**
	 * 查询我赠送的红花记录
	 * @param sendManId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<RedFlowerResult> findMySendFlowerList(String sendManId,int pageNo,int pageSize);
	/**
	 * 查询赠送我的红花记录
	 * @param sendManId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<RedFlowerResult> findSendMyFlowerList(String addManId,int pageNo,int pageSize);
	
	/**
	 * 查询昨日红花获得者排名
	 * @param map
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<RedFlowerResult> findYesterdayFlowerRank(Map<String,Object> map,int pageNo,int pageSize);
	
	/**
	 * 模糊查询昨日红花获得者信息，可以输入员工号、员工名称
	 * @param content
	 * @return
	 */
	public Page<RedFlowerResult> findYesterdayFlowerListByCon(String content, int pageNo, int pageSize);
	
	/**
	 * 获取指定期限内获得红花的总数
	 * @param empId
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public Long getAddRedFlowerCountOfTerm(String empId,Date startDate,Date endDate);
	/**
	 * 获取指定期限内获得红花的总数
	 * @param empId
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public Page<RedFlowerResult> getAddRedFlowerInfoOfTerm(String empId,Date startDate,Date endDate, int pageNo, int pageSize);
	/**
	 * 送花人与被送花人是同一个部门 count:false:不是 true:是
	 * @param sendManId
	 * @param addManId
	 * @return
	 */
	public boolean isEqDept (String sendManId,String addManId);
}
